package com.yang.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.yang.domain.DTO.AddArticleDto;
import com.yang.domain.DTO.EditArticleDto;
import com.yang.domain.Result;
import com.yang.domain.VO.ArticleVo;
import com.yang.domain.entity.Article;

/**
 * <p>
 * 文章表(Article)表服务接口
 * </p>
 * @author yang
 * @date 2023/5/29
 */
public interface ArticleService  extends IService<Article> {

    /**
     * 1.按照文章游览量进行降序排序
     * 2.必须是正序文章
     * 3.分页查询，一次十页
     */
    Result hotArticleList();

    /**
     * 1.根据分类查询文章id
     * 2.分类查询条件可有可无
     * 3.分页查询条件
     */
    Result articleList(Integer pageNum, Integer pageSize, Long categoryId);

    /**
     * 1.根据id查询详细信息
     * 2.从redis里面查询博客游览量
     * 3.查询博客所属的分类
     */
    Result getArticleDetail(Long id);

    /**
     * 1.没游览一次就去redis里面更新缓存
     * 2.然后定时刷新到数据库里面
     */
    Result updateViewCount(Long id);

    /**
     * 1.新增博客信息，同时将里面封装的tabId
     * 2.查询出来存入到博客标签关联表里面
     */
    Result addAddArticl(AddArticleDto addArticleDto);

    /**
     * 1.能够根据标题和摘要进行模糊查询
     * 2.不能把删除了的文章查询出来
     */
    Result findAllAddArticle(Article article, Integer pageNum, Integer pageSize);

    /**
     * 1.先更新文章博客表
     * 2.在删除文章关联表里面所关联的信息
     * 3.重新添加标签信息
     */
    Result edit(EditArticleDto articleDto);

    /**
     * 1.根据id查询文章详细信息
     * 2.根据文章id查询出关联表的信息
     */
    ArticleVo getInfo(Long articleId);
}

